import os
import json
def mkdir(path):#建立目录
    isExists=os.path.exists(path)
    if not isExists:
        os.makedirs(path)
        return True
    else:
        return False

def create_list(gen_name,start_num,number):#创建世代文件夹下面的宝可梦json，包含基本框架
    pokemonjson = {'pokemon_list': []}
    start=start_num
    num=number
    while( num > 0):
        pokemonjson['pokemon_list'].append({
            'num':start,
            'species':'',
            'speciesChinese':'',
            'Normal':{
                '0':{}
            },#一般物种的数据
            'Alola':{
                '0':{}
            },#阿罗拉亚种的数据
            'Galar':{
                '0':{}
            },#伽勒尔亚种的数据
        })
        start=start+1
        num=num-1
    jsondata=json.dumps(pokemonjson,indent=4,separators=(',',':'))
    f = open('./pokemon_data/'+gen_name+'/pokemon.json','w', encoding='utf-8')
    f.write(jsondata)
    f.close()

def create_generation(gen_name,start_num,number):#世代创建
    f1=open('./pokemon_data/gen_list.json','r')
    pokemon_gen=json.load(f1)
    f1.close()
    gen_save=0#判定用
    for i in range(len(pokemon_gen['gen_list'])):#遍历gen_list,查询是否存在该世代
        gen_data = pokemon_gen['gen_list'][i - 1]
        if gen_data['gen_name'] == gen_name:
            gen_save = 1#存在世代，gen_save置1
            break
        else:
            continue
    if gen_save==1:
        print('gen is existed!')#反馈世代存在
    else:
        pokemon_gen['gen_list'].append({
            'gen_name': gen_name,
            'gen_startNum': start_num,
            'gen_total': number
        })
        jsondata = json.dumps(pokemon_gen, indent=4, separators=(',', ':'))#json操作的参数是什么意思，还需要搞清楚
        f2 = open('./pokemon_data/gen_list.json', 'w', encoding='utf-8')
        f2.write(jsondata)
        f2.close()

        mkdir("./pokemon_data/" + gen_name)
        mkdir("./pokemon_data/" + gen_name + "/Icon")
        mkdir("./pokemon_data/" + gen_name + "/Normal")
        mkdir("./pokemon_data/" + gen_name + "/Alola")
        mkdir("./pokemon_data/" + gen_name + "/Galar")#生成目标文件夹
        create_list(gen_name, start_num, number)
def pokemon_data_change(types,genderTatio,levelupRare,catchRare,kind,pokedex,baseStats,abilities,heightm,weightkg,color,evolution,eggGroups):#获取宝可梦具体六维等基本数据，并返回pokemonjson字符串
    pokemonjson={
        'types': types,#属性组，需要作为子数组加入
        'genderTatio': genderTatio,#公母比例，需要作为子数组加入
        'levelupRare': levelupRare,#升级速率等级
        'catchRare': catchRare,#捕获等级
        'kind': kind,#类型，用来说明是xxx宝可梦
        'pokedex': pokedex,#utf8的中文说明字段
        'baseStats':baseStats,#6维，需要作为子数组加入
        'abilities': abilities,#特性，需要作为子数组加入
        'heightm': heightm,#身高，默认单位，m
        'weightkg': weightkg,#体重，默认单位，kg
        'color': color,#颜色
        'evolution': evolution,#进化条件，需要包含进化方向和进化条件，考虑可能出现多个条件，必须做特别照顾
        'eggGroups': eggGroups#蛋组，需要作为子数组加入
    }
    return pokemonjson

def pokemon_get_types():
    return True
def pokemon_get_genderTatio():
    return True
def pokemon_get_baseStats():
    return True
def pokemon_get_abilities():
    return True
def pokemon_evolution():
    return True

def check_pokemon_data(gen_name,num):
    genlist = json.load(open('./pokemon_data/gen_list.json', 'r', encoding='utf-8'))
    pokemonlist = json.load(open('./pokemon_data/' + gen_name + '/pokemon.json', 'r', encoding='utf-8'))
    for j in range(len(genlist['gen_list'])):
        gendata = genlist['gen_list'][j - 1]  # 这是一种解嵌套的做法，或者有其他的名词，json
        if gendata['gen_name'] == gen_name:  # 读取到python里会作为数组，这里的目的就是将
            total = gendata['gen_total']  # 第一层元素取出，重新作为一个子数组读取。python
            break  # 暂时没有更好处理多层json 的手段
    for i in range(int(total)):
        pokemonObject = pokemonlist['pokemon_list'][i - 1]
        if pokemonObject['num'] == num:
            return i-1
            break
def create_pokemon_data(gen_name,num,key,content):#按世代和编码查询宝可梦并修改其数据
   genlist=json.load(open('./pokemon_data/gen_list.json','r', encoding='utf-8'))
   print(len(genlist['gen_list']))
   pokemonlist=json.load(open('./pokemon_data/'+gen_name+'/pokemon.json','r', encoding='utf-8'))
   for j in range(len(genlist['gen_list'])):
       gendata=genlist['gen_list'][j-1] #这是一种解嵌套的做法，或者有其他的名词，json
       if gendata['gen_name']==gen_name:#读取到python里会作为数组，这里的目的就是将
           total=gendata['gen_total']   #第一层元素取出，重新作为一个子数组读取。python
           break                        #暂时没有更好处理多层json 的手段
   for i in range(total):
       pokemonObject=pokemonlist['pokemon_list'][i-1]
       if pokemonObject['num']==num:
           print(pokemonObject)
           pokemonObject[key]=content
           pokemonlist['pokemon_list'][i-1]=pokemonObject
           jsondata = json.dumps(pokemonlist,indent=4,separators=(',', ':'))
           jsondata=jsondata
           f = open('./pokemon_data/' + gen_name + '/pokemon.json', 'w', encoding='utf-8')
           f.write(jsondata)
           f.close()
           break



